package com.github.codemperor.core.message.omnisend.bean.order;

import java.util.List;
import java.util.Date;

/**
 * 订单创建时，omnisend email的参数
 */
public class OrderPostRequest {

    private String orderID;
    private Integer orderNumber;
    private String email;
    private String shippingMethod;
    private String trackingCode;
    private String courierTitle;
    private String orderUrl;
    private List<String> tags; //Can Null
    private String currency;
    private Integer subTotalSum;
    private Integer orderSum;
    private Integer taxSum;
    private Integer shippingSum;
    private String createdAt;
    private String updatedAt;
    private String paymentMethod;
    private String paymentStatus;
    private BillingAddress billingAddress;
    private ShippingAddress shippingAddress;
    private List<Products> products;
    private CustomFields customFields;

    public String getOrderID() {
        return orderID;
    }

    public void setOrderID(String orderID) {
        this.orderID = orderID;
    }

    public Integer getOrderNumber() {
        return orderNumber;
    }

    public void setOrderNumber(Integer orderNumber) {
        this.orderNumber = orderNumber;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getShippingMethod() {
        return shippingMethod;
    }

    public void setShippingMethod(String shippingMethod) {
        this.shippingMethod = shippingMethod;
    }

    public String getTrackingCode() {
        return trackingCode;
    }

    public void setTrackingCode(String trackingCode) {
        this.trackingCode = trackingCode;
    }

    public String getCourierTitle() {
        return courierTitle;
    }

    public void setCourierTitle(String courierTitle) {
        this.courierTitle = courierTitle;
    }

    public String getOrderUrl() {
        return orderUrl;
    }

    public void setOrderUrl(String orderUrl) {
        this.orderUrl = orderUrl;
    }

    public List<String> getTags() {
        return tags;
    }

    public void setTags(List<String> tags) {
        this.tags = tags;
    }

    public String getCurrency() {
        return currency;
    }

    public void setCurrency(String currency) {
        this.currency = currency;
    }

    public Integer getSubTotalSum() {
        return subTotalSum;
    }

    public void setSubTotalSum(Integer subTotalSum) {
        this.subTotalSum = subTotalSum;
    }

    public Integer getOrderSum() {
        return orderSum;
    }

    public void setOrderSum(Integer orderSum) {
        this.orderSum = orderSum;
    }

    public Integer getTaxSum() {
        return taxSum;
    }

    public void setTaxSum(Integer taxSum) {
        this.taxSum = taxSum;
    }

    public Integer getShippingSum() {
        return shippingSum;
    }

    public void setShippingSum(Integer shippingSum) {
        this.shippingSum = shippingSum;
    }

    public String getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(String createdAt) {
        this.createdAt = createdAt;
    }

    public String getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(String updatedAt) {
        this.updatedAt = updatedAt;
    }

    public String getPaymentMethod() {
        return paymentMethod;
    }

    public void setPaymentMethod(String paymentMethod) {
        this.paymentMethod = paymentMethod;
    }

    public String getPaymentStatus() {
        return paymentStatus;
    }

    public void setPaymentStatus(String paymentStatus) {
        this.paymentStatus = paymentStatus;
    }

    public BillingAddress getBillingAddress() {
        return billingAddress;
    }

    public void setBillingAddress(BillingAddress billingAddress) {
        this.billingAddress = billingAddress;
    }

    public ShippingAddress getShippingAddress() {
        return shippingAddress;
    }

    public void setShippingAddress(ShippingAddress shippingAddress) {
        this.shippingAddress = shippingAddress;
    }

    public List<Products> getProducts() {
        return products;
    }

    public void setProducts(List<Products> products) {
        this.products = products;
    }

    public CustomFields getCustomFields() {
        return customFields;
    }

    public void setCustomFields(CustomFields customFields) {
        this.customFields = customFields;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("{");
        sb.append("\"orderID\":\"")
                .append(orderID).append('\"');
        sb.append(",\"orderNumber\":")
                .append(orderNumber);
        sb.append(",\"email\":\"")
                .append(email).append('\"');
        sb.append(",\"shippingMethod\":\"")
                .append(shippingMethod).append('\"');
        sb.append(",\"trackingCode\":\"")
                .append(trackingCode).append('\"');
        sb.append(",\"courierTitle\":\"")
                .append(courierTitle).append('\"');
        sb.append(",\"orderUrl\":\"")
                .append(orderUrl).append('\"');
        sb.append(",\"tags\":")
                .append(tags);
        sb.append(",\"currency\":\"")
                .append(currency).append('\"');
        sb.append(",\"subTotalSum\":")
                .append(subTotalSum);
        sb.append(",\"orderSum\":")
                .append(orderSum);
        sb.append(",\"taxSum\":")
                .append(taxSum);
        sb.append(",\"shippingSum\":")
                .append(shippingSum);
        sb.append(",\"createdAt\":\"")
                .append(createdAt).append('\"');
        sb.append(",\"updatedAt\":\"")
                .append(updatedAt).append('\"');
        sb.append(",\"paymentMethod\":\"")
                .append(paymentMethod).append('\"');
        sb.append(",\"paymentStatus\":\"")
                .append(paymentStatus).append('\"');
        sb.append(",\"billingAddress\":")
                .append(billingAddress);
        sb.append(",\"shippingAddress\":")
                .append(shippingAddress);
        sb.append(",\"products\":")
                .append(products);
        sb.append(",\"customFields\":")
                .append(customFields);
        sb.append('}');
        return sb.toString();
    }
}
